<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>






function Test(name,age){
            this.name = name;
            this.age = age;
        }
        
        obj = {
            
        }
        // Test.call(obj,name='陈鹏',age=28)
       Test.apply(obj,[name='陈鹏',28])
        

console.log(obj.age);
console.log(obj.name);




// 分别使用call，apply为obj添加name，age属性

// 2.
// 实现陈鹏买车，其中有sayHi方法，功能:打印'陈鹏买了一辆红色的2.0宝马车'





// function Name(){
     
// }
// Name.prototype.Name1='陈鹏'
// function car(){
     
//     }
//    name.prototype.car1='2.0宝马车'

//    name.prototype.colour1='红色'
    
//    console.log(Name.prototype);
//    console.log(car.prototype);
// //   



// function inherit(top1,top2){
//       function A(){}
//       A.prototype=top1.prototype//把top1的原型赋给临时函数
//         var A =new A()//建一个副本，防止top2发生改变，假如是 top2.prototype=top1.prototype那么会使top2的原型被直接覆盖掉
       
//         top2.prototype=A
//         top2.prototype.constructor=top2;//构造器归为
//         top1.prototype.uber=top2 //超累，类似super的用法，可以让top1访问父类top2
        

//    }
//    inherit(Name,car)
//    var N=new Name()
//    console.log(car.prototype.Name1+'买了一辆'+Name.prototype.colour1+Name.prototype.car1);
//    console.log(car.__proto__.uber);






// 3.父类Shape （属性有:name,length,width,方法有:Intro 我是XX形

// 子类： Circle(属性有:r)

//原型链继承
// function shape(){}
// function Circle(){}
// shape.prototype.name='正方形'
// shape.prototype.length='长为2'
// shape.prototype.width='宽为2';
// shape.prototype.INtro=()=>{

//     console.log('我是'+shape.prototype.name);
// }
// Circle.r='我也不知道这个属性是什么意思'

// var baba= new shape();
// Circle.prototype=baba
// Circle.prototype.INtro()
// console.log(Circle.prototype.length);
// console.log(Circle.prototype.width);


//构造函数继承
// function shape(name,length,width){
//     this.name=name
//     this.length=length
//     this.width=width
    
//     function Intro (){
//         console.log('我是'+name);
//     }


// }
// function Circle(){
//     shape.call(this,name,length,width)
    
// }
//   var erzi =new Circle(name='正方行',length='2',width=2)
//   console.log(name);
//   console.log(length);
//   console.log(width);
// Circle.prototype.r='我也不知道这个属性是什么意思'
// console.log(Circle.prototype.r);
// 分别使用 原型链继承 构造函数继承 圣杯继承



//圣杯继承


// function shape(){}
// function Circle(){}
// shape.prototype.name='正方形'
// shape.prototype.length='长为2'
// shape.prototype.width='宽为2';
// shape.prototype.INtro=()=>{

//     console.log('我是'+shape.prototype.name);
// }
// Circle.r='我也不知道这个属性是什么意思'


// function inherit(No1,No2){
//     function A(){}
//     A.prototype=No1.prototype   
//     No2.prototype=new A()
//     No2.prototype.constructor=No2;
//     No1.prototype.uber=No2


// }
// inherit(shape,Circle);
// Circle.prototype.INtro();
// console.log(Circle.prototype.width);
// console.log(Circle.prototype.length);
// console.log(Circle.prototype.r);



    </script>
</body>
</html>